<?php
/**
* var_dump的升级缩短版,用法同之,但本函数输出后默认会自动die掉脚本
* 如果最后一个参数传入的null,则不会die掉脚本
* dk2013原创，qq 124137924
**/
function test(){
$arguments = func_get_args() ;
$args_count = count($arguments) ;
if($args_count > 0){
$nodie = $args_count > 1 && is_null($arguments[$args_count - 1]) ;
if($nodie){
unset($arguments[$args_count - 1]) ;
$args_count = $args_count - 1;
}
}
ob_start();
// 以取数组元素形式将元素集合以字符串参数形式返回并代入var_dump函数eval解析执行之
eval('var_dump('. d_join($args_count, '$arguments[[###R]]') .');') ;
$output = ob_get_clean();
$output = preg_replace('/\]\=\>\n(\s+)/m', '] => ', $output);
$output = '<pre style="line-height:24px;word-wrap:break-word;word-break:normal;">' . htmlspecialchars($output, ENT_QUOTES) . '</pre>';
echo $output ;
if(empty($nodie))die ;
}

/**
* 数组连接为字符串
* 将类似'array(1,2,"abc")'这样的数组,以'test[[###R]]'这样的模型,用','符号连接成'test[1],test[2],test[abc]'这样的形式
* $array     数组或正整型数字
* $model     字符串,包含的'[###R]'字符串将替换成数组元素值
* $glue     同PHP的implode函数的$glue参数
**/
function d_join($array, $model = '[###R]', $glue = ','){
if(is_int($array) && $array > 0){
// 赋值数组长度,初始化数组
($count = $array) && ($array = array()) ;
for($i = 0;$i < $count;$i ++)$array[] = $i ;
}
// 如果array不是数组,则强转数组
if(!is_array($array))$array = (array) $array ;
$replace = '[###R]' ;
$count = count($array) ;
for($i = 0;$i < $count; $i++){
// 模型赋值
$array[$i] = str_replace($replace, $array[$i], $model) ;
}
return implode($glue, $array) ;
}
?>